<?php

if(!defined("VL_LEGAL")) die();

/**
 * Операционный слой для работы с базами данных MySQL
 * @author vladimmi <vladimmi@ya.ru>
 */


/**
 * MySQL layer for qDatabase
 * @author vladimmi
 */
class vlMySQL
{
	/**
	 * Ресурс соединения
	 * @var resource 
	 */
	var $connection;
	
	/**
	 * Подключение к серверу БД и выбор указанной базы
	 * @param string $host Хост сервера
	 * @param string $user Имя пользователя
	 * @param string $pass Пароль
	 * @param string $name Название базы
	 * @return bool True, если подключение прошло успешно и база существует, иначе false
	 */
	function connect($host, $user, $pass, $name)
	{
		$this->connection=@mysql_connect($host, $user, $pass);
		if(is_resource($this->connection)) {
			mysql_set_charset("utf8", $this->connection);
			return @mysql_select_db($name, $this->connection);
		} else return false;
	}
	
	/**
	 * Отключение от сервера
	 * @return bool True, если отключение прошло успешно, иначе false
	 */
	function disconnect()
	{
		return @mysql_close($this->connection);
	}
	
	/**
	 * Выполнение SQL-запроса
	 * @param string $query Строка запроса
	 * @return resource Ресурс с результатами выполнения запроса
	 */
	function query($query)
	{
		return @mysql_query($query, $this->connection);
	}
	
	/**
	 * Разбор ресурса с результатами выполнения запроса в ассоциативный массив
	 * @param resource $res Ресурс с результатами выполнения запроса
	 * @return mixed Ассоциативный массив с результатами или false, если разбор не удался
	 */
	function fetchAssoc($res)
	{
		return @mysql_fetch_assoc($res);
	}
	
	/**
	* Разбор ресурса с результатами выполнения запроса в массив
	* @param resource $res Ресурс с результатами выполнения запроса
	* @return mixed Массив с результатами или false, если разбор не удался
	*/
	function fetchArray($res)
	{
		return @mysql_fetch_row($res);
	}
	
	/**
	 * Количество строк в ресурсе с результатами выполнения запроса
	 * @param resource $res Ресурс с результатами выполнения запроса
	 * @return int
	 */
	function numRows($res)
	{
		return @mysql_num_rows($res);
	}
	
	/**
	 * ID строки, добавленной при последней операции
	 * @return int
	 */
	function insertId()
	{
		return mysql_insert_id($this->connection);
	}
	
	
	/**
	 * Строка ошибки из предыдущей выполненной операции
	 * @return string
	 */
	function error()
	{
		if(mysql_errno($this->connection)) return mysql_error();
		else return "";
	}
	
	
	/**
	 * Количество рядов, затронутых предыдущей операцией
	 * @return int
	 */
	function affectedRows()
	{
		return mysql_affected_rows();
	}
	
	/**
	 * Строка с информацией о сервере MySQL
	 * @return string
	 */
	function serverInfo()
	{
		return mysql_get_server_info($this->connection);
	}
}

?>